// 正则校验
function test(reg) {
    return function(str) {
        return reg.test(str)
    }
}


const userTestFn = test(/^[a-zA-Z]\w{5,11}$/) ;

const pwdTestFn = test(/^\w{6,10}$/) ;
// 其他的验证
// 手机号
const phoneTestFn = test(/^\d{11}$/) ;


// 邮箱
// 身份证
// 。。。

// 可以反复的调用test这个函数


// 可以把所有的正则都写在同一个文件中




function myLocation(protocol , hostname , port , pathname) {
    return protocol + '://' + hostname + ':' + port + pathname 
}



function curry(fn , ...arr) {   // ...arr 初始化传参
    // console.log(fn.length);  // 拿到原本的功能函数的形参个数
    // console.log(arr);  
    const len = fn.length ;

    return function(...arr2) {   // 返回一个接收余下的参数的函数
        // 判断参数是否足够   arr+arr2的参数
        const arr3 = [...arr , ...arr2] ;
        if(arr3.length === len) {
            // 参数如果已经够了
            return fn(...arr3) ;
        } else {
            return curry(fn , ...arr3)
        }
    }

}


const pathnameFn = curry(myLocation)('http')('www.baidu.com')(80)





